package com.itany.corejava.code14_lambda;

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年12月14日 15:54
 */
public class Test04_断言型接口 {
    public static void main(String[] args) {

        List<String> list= Arrays.asList("黄晓明","朱一龙","董宇辉","东方小孙");
        // testPredicate(new Predicate<String>() {
        //     @Override
        //     public boolean test(String s) {
        //         //返回名字中带有董的字符串
        //         return s.contains("董");
        //     }
        // },list);


        //Lambda表达式
        testPredicate(s->s.contains("董"),list);




    }

    /**
     * 断言型接口 Predicate<T>,方法:boolean test(T t);
     * 接口泛型类型与方法的参数类型是一致的
     * 方法的返回值是以布尔值类型，一般用于判断给的的参数是否符合指定的规则
     * 具体规则由方法调用者实现
     * @param predicate
     * @param strs
     */
    public static void testPredicate(Predicate<String> predicate, List<String> strs){
        for(String s:strs){
            if(predicate.test(s)){

                //当断言型接口方法返回true，则打印对应的内容
                System.out.println(s);
            }
        }
    }
}
